﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Reflection;

namespace Util
{
    public class Reflections
    {

        public Reflections()
        {

        }


        public Object create(Type obj)
        {
            object objecto = Activator.CreateInstance(obj);
            return objecto;
        }

        public object getPropertyValue(object obj, string property)
        {
            Type type = obj.GetType();

            PropertyInfo numberPropertyInfo = type.GetProperty(property);

            return numberPropertyInfo.GetValue(obj, null);

        }

        public void setPropertyValue(object obj, string property, object value)
        {
            if (value != null)
            {
                Type type = obj.GetType();

                PropertyInfo numberPropertyInfo = type.GetProperty(property);

                numberPropertyInfo.SetValue(obj, value, null);
            }
        }


        public void setPropertyValue(object obj, PropertyInfo propertyInfo, object value)
        {
            if (value != null)
            {
                propertyInfo.SetValue(obj, value, null);
            }

        }


        public PropertyInfo[] getPropertys(object obj)
        {
            Type type = obj.GetType();

            PropertyInfo[] propertyInfos = type.GetProperties();

            return propertyInfos;
        }

        public Boolean isString(PropertyInfo propertyInfo)
        {
            Boolean resultado = false;

            if (propertyInfo.PropertyType.Equals(typeof(String)))
            {
                resultado = true;
            }

            return resultado;

        }

        public Boolean isDecimal(PropertyInfo propertyInfo)
        {
            Boolean resultado = false;

            if (propertyInfo.PropertyType.Equals(typeof(Decimal)))
            {
                resultado = true;
            }

            return resultado;

        }


        public Boolean isDouble(PropertyInfo propertyInfo)
        {
            Boolean resultado = false;

            if (propertyInfo.PropertyType.Equals(typeof(Double)))
            {
                resultado = true;
            }

            return resultado;

        }

        public Boolean isLong(PropertyInfo propertyInfo)
        {
            Boolean resultado = false;

            if (propertyInfo.PropertyType.Equals(typeof(long)))
            {
                resultado = true;
            }

            return resultado;

        }

        public Boolean isChar(PropertyInfo propertyInfo)
        {
            Boolean resultado = false;

            if (propertyInfo.PropertyType.Equals(typeof(Char)))
            {
                resultado = true;
            }

            return resultado;

        }


        public Boolean isDateTime(PropertyInfo propertyInfo)
        {
            Boolean resultado = false;

            if (propertyInfo.PropertyType.Equals(typeof(DateTime)))
            {
                resultado = true;
            }

            return resultado;

        }

        public Boolean isBoolean(PropertyInfo propertyInfo)
        {
            Boolean resultado = false;

            if (propertyInfo.PropertyType.Equals(typeof(Boolean)))
            {
                resultado = true;
            }

            return resultado;

        }

        public Boolean isByte(PropertyInfo propertyInfo)
        {
            Boolean resultado = false;

            if (propertyInfo.PropertyType.Equals(typeof(Byte)))
            {
                resultado = true;
            }

            return resultado;

        }

    }
}